#!/bin/sh
set -eu

APP_MACOS=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
PROJECT_ROOT=$(CDPATH= cd -- "$APP_MACOS/../../../../" && pwd)
DATA_ROOT="$PROJECT_ROOT/assets/Super Mario Galaxy 2 (USA) (En,Fr,Es)/DATA"
USER_DIR="$PROJECT_ROOT/port-user"
RUNNER="$APP_MACOS/moderngekko-run-bin"
MODULE="$APP_MACOS/gSB4E01_recomp.dylib"
LOG_DIR="$USER_DIR/Logs"
LOG="$LOG_DIR/native-app.log"

mkdir -p "$LOG_DIR"
if [ ! -f "$DATA_ROOT/sys/boot.bin" ] || [ ! -f "$DATA_ROOT/sys/main.dol" ] || [ ! -d "$DATA_ROOT/files" ]; then
  echo "SMG2 Native: extracted DATA directory not found: $DATA_ROOT" >> "$LOG"
  exit 2
fi

DISC_ID=$(dd if="$DATA_ROOT/sys/boot.bin" bs=1 count=6 2>/dev/null)
if [ "$DISC_ID" != "SB4E01" ]; then
  echo "SMG2 Native: unsupported disc ID '$DISC_ID' (expected SB4E01)" >> "$LOG"
  exit 2
fi
DOL_SHA=$(shasum -a 256 "$DATA_ROOT/sys/main.dol" | awk '{print $1}')
if [ "$DOL_SHA" != "abea6b0c498c4af90b17cfa08d54a01781186f097bee3e0761dbfb4838cbc281" ]; then
  echo "SMG2 Native: main.dol hash mismatch for SB4E01 Rev 0" >> "$LOG"
  exit 2
fi
if [ ! -x "$RUNNER" ] || [ ! -f "$MODULE" ]; then
  echo "SMG2 Native: bundled runner or native module is missing" >> "$LOG"
  exit 2
fi

echo "[$(date -u '+%Y-%m-%dT%H:%M:%SZ')] starting SB4E01 native build" >> "$LOG"
exec "$RUNNER" --game "$DATA_ROOT" --module "$MODULE" --user-dir "$USER_DIR" \
  --graphics Metal --no-mods --title "Super Mario Galaxy 2 — Native macOS" "$@" >> "$LOG" 2>&1
